home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Franz PD
/
Franz PD Disk #334 (1994-06)(Rhein-Sieg-Soft).zip
/
Franz PD Disk #334 (1994-06)(Rhein-Sieg-Soft).adf
/
ASo-Tools
/
Beschreibung
< prev
next >
Wrap
Text File
|
1994-06-13
|
21KB
|
509 lines
ASo-Tools
V1.0 vom 10.6.1994
------------------------------------------------------------------
0. Allgemeines
Die ASo-Tools sind eine Sammlung kleiner Tools.
Die Tools selbst sind teilweise in Englisch gehalten.
Im Hinblick auf Nutzung und Vervielfältigung der Programme und
Sources stelle ich folgende Regeln auf:
a) Ich behalte das Copyright für die Programme und alle von
mir selbst entwickelten Programmtechniken.
b) Die Programme müssen immer zusammen mit der Dokumentation
kopiert werden. In Software-Sammlungen dürfen auch die
Sources nicht weggelassen werden. Werden nur einzelne
Programme kopiert, so ist es gestattet, diese Anleitung
entsprechend zu kürzen.
c) Die Programme und Ihre Sources dürfen für folgende Zwecke
frei vervielfältigt werden:
- PD-Disketten und zur Unterstützung anderer PD-Programme
- private Nutzung
- direkte Nutzung, nicht aber Vermarktung auf jedem Amiga.
d) Änderungen an den Programmen sind nur erlaubt, wenn:
- In den Sources entsprechende Vermerke gemacht werden,
die zumindest den Namen des Autors (der Änderung) und
eine kurze Beschreibung der Änderung an sich enthalten.
- Die Programme zusammen mit den Sources weiterverbreitet
werden.
e) Es ist ausdrücklich erlaubt, die in den Programmen bzw. den
Sources verwendeten Programmiertechniken für eigene
Programme zu kopieren. Sollte eines der Tools in seiner
Funktion einigermaßen vollständig in andere Programme
eingehen, so verlange ich allerdings in der zugehörigen
Dokumentation einen Verweis auf die Quelle.
f) Die Programme dürfen auch zur Unterstützung von Shareware
oder Low-Cost-Software beigefügt werden, falls dafür nicht
mehr als DM 25,- verlangt werden. In diesem Fall hat mir
der Autor jedoch nach der Registrierung / dem Verkauf von 5
Exemplaren seines Programm(pakets) dieses als Gegenleistung
kostenlos mir zur Verfügung zu stellen.
g) Alles andere ist grundsätzlich erst einmal verboten; ich
lasse aber sicher mit mir reden.
Ich bin / der Autor dieser Programmsammlung ist:
Arnold Schommer
Erikaweg 16
40670 Meerbusch-Strümp
BugReports sind mir grundsätzlich willkommen, ich kann freilich
keine Antwort versprechen.
------------------------------------------------------------------
Allgemeines zu den Beschreibungen der einzelnen Tools:
- Umgebung [CLI/Workbench]: gibt an, ob die Programme vom CLI und
/ oder von der Workbench aus gestartet werden können. Die
nur-CLI-Programme haben in der Regel keinen speziellen Startup-
Code, um beim Workbench-Start fehlerfrei abzubrechen.
CLI-Programme sollten normalerweise auch unter jeder beliebigen
anderen Shell lauffähig sein. (getestet wurde übrigens nicht im
CLI, sondern unter CSH 5.19)
- Voraussetzung: gibt hard- und softwaremäßige Mindest-
Voraussetzungen für das funktionieren der Programme an.
Teilweise können die Programme auch unter Minimalvoraussetzungen
(wenig Speicher, Kickstart 1.2) wenigstens eine entsprechende
Fehlermeldung erzeugen.
"OS2" bedeutet hier das vorliegen der Libraries exec, dos,
graphics und intuition mit einer Version von jeweils mindestens
36.
- Aufruf: gibt kurz die möglichen Parameter an. Für CLI-Aufrufe
ist diese Beschreibung im gleichen Stil wie im Handbch gegeben:
Was in eckigen Klammern steht, darf fehlen;
"|" trennt wahlweise Parameter;
was in spitzen "Klammern" (<>) steht, kann konkrete Werte wie
Dateinamen oder Zahlen enthalten, der Rest muß (von Groß-/
Kleinschreibung abgesehen) ebenso abgetippt werden
- Programmiersprache: Der Compiler/Assembler, mit dem die Sources
compiliert wurden. Genauer sind das:
- DICE: DICE V2.07 (PD)
- A68k: A68k V2.71 und BLink, allerdings mit erweiterten
Include-Files, die die LVOs enthalten. Diese Includes liegen
bei und können mit dem Script-File "InstallLVO" in das
Include-Verzeichnis ihres Assemblers kopiert werden, wozu sie
nur vorher das Assign "include:" eben darauf einrichten
müssen.
- Beispiel: Erklärt an einem Beispiel, wozu das jeweilige Tools
nützlich ist; oft der Fall, für den ich es jeweils geschrieben
habe.
Es folgen die Beschreibungen der einzelnen Tools:
------------------------------------------------------------------
1. LibList
Umgebung: CLI
Voraussetzung: OS2
Aufruf: LibList [IDs]
Programmiersprache: A68k
Funktion:
Listet alle vorhandenen (shared) Libraries mit Name, Anzahl der
Funktionsvektoren, Größe des Datenbereiches, Versions- und
Revisionsnummer und Öffnungszähler auf. Wird der Parameter 'IDs'
angegeben, so werden in einer zweiten Liste jeweils die Namen und
ID-Strings ausgegeben.
------------------------------------------------------------------
2. FlushLibs
Umgebung: CLI, Workbench
Programmiersprache: A68k
Funktion:
Versucht, sämtliche ungeöffneten (shared) Libraries aus dem
Speicher zu löschen, indem es sie öffnet, das DelExp-Flag setzt
und sie wieder schließt. Laut Amiga-Intern von Data-Becker soll
der Library so mitgeteilt werden können, daß sie sich aus dem
Speicher zu entfernen hat. Tatsächlich funktioniert es aber nur
bei wenigen Libraries.
Unter Kickstart 2.0 kann man dasselbe (vermutlich - ich hab's
nicht per Debugger kontrolliert) auch durch "Avail flush"
erreichen.
Beispiel:
Man entwickelt eine shared Library und muß die alte Version
natürlich nach jeder neuen Compilation aus dem Speicher
entfernen. Das geht aber eigentlich nur, wenn man die Versions-
nummer ständig erhöht, was eigentlich nicht ihr Sinn ist. Hier
hilft der Aufruf von FlushLibs - vorausgesetzt, man hat den
Kopf der Library so programmiert, daß sie sich wie vorgeschrieben
bei CloseLibrary() mit desetzten DelExp-Flag selber löscht.
------------------------------------------------------------------
3. AskBool
Umgebung: CLI
Voraussetzung: OS2
Aufruf: AskBool [TITLE <title>] [QUESTION] <question>
[YES <yes>] [NO <no>]
Programmiersprache: A68k
Funktion:
Ähnelt dem CLI-Befehl Ask, benutzt aber nicht eine simple
Tastatureingabe, sondern einen EasyRequest. Das Ergebnis wird per
Returncode gemeldet. Für nein wird RETURN_OK==0, für ja
RETURN_WARN==5 zurückgegeben. Diese Returncodes können leicht mit
dem CLI-Befehl IF abgefragt werden. Diese Returncodes sind mit dem
CLI-Befehl Ask kompatibel.
Die Parameter bedeuten:
<title> Titel des EasyRequests. Default: "" (Tatsächlich
erscheint dann "System Request")
<question> Text der Frage. Darf Zeilentrenner enthalten.
<yes> Text des "Ja"-Gadgets. Default: "Yes"
<no> Text des "Nein"-Gadgets. Default: "No"
Beispiel:
Eine Batch-Datei zum gesicherten Löschen von Dateien:
.key file/a
AskBool "<file> wirklich löschen ?" yes Ja no Nein
if not warn
delete <file>
endif
------------------------------------------------------------------
4. AskFile
Umgebung: CLI
Voraussetzung: OS2, ASL-Library
Aufruf: AskFile [VAR=VARNAME] <varname> [LOCAL]
[QUESTION=TITLE] <title>
[CONFIRM <confirm>] [CANCEL <cancel>]
[NO_OLD=BLANK] [FILE <file>]
[DIR <dir>] [NOFILES] [SAVE]
[PATTERN <pattern>]
[PATTERN_GADGET=PATGG]
Programmiersprache: A68k
Funktion:
Führt einen Asl-FileRequest durch und meldet das Ergebnis in einer
Variablen. Variablen können z.B. im CLI mit "$varname" benutzt
werden.
Die Parameter bedeuten:
<varname> Name der Variablen.
LOCAL Es soll eine lokale Variable sein. Default: Es soll
eine globale Variable sein.
<title> Titel des FileRequests.
<confirm> Text für das Bestätigungs-Gadget.
<cancel> Text für das Abbruchs-Gadget.
NO_OLD File- und Directory-Name werden mit "" initialisiert.
Default: Die Werte für File und Directory-Namen werden
aus dem bisherigen Wert der Variablen ermittelt.
<file> Der File-Name werden mit "<file>" initialisiert.
Default: Die Werte für File und Directory-Namen werden
aus dem bisherigen Wert der Variablen ermittelt.
<dir> Der Directory-Name werden mit "<dir>" initialisiert.
Default: Die Werte für File und Directory-Namen werden
aus dem bisherigen Wert der Variablen ermittelt.
NOFILES Es werden nur Directorys angezeigt.
SAVE Es wird ein Save-Requester erzeugt (d.h. andere
Farben, keine Anwahl per Doppelclick)
<pattern> Es wird ein Pattern-Gadget erzeugt und mit "<pattern>"
initialisiert. Default: es gibt kein Pattern-Gadget.
PATGG Es wird ein Pattern-Gadget erzeugt. Default: es gibt
kein Pattern-Gadget.
Wird der FileRequest abgebrochen, so wird die Variable nicht
geschrieben.
Beispiel:
Eine Batch-Datei, die eine per FileRequester ausgewählte Datei
ausgibt:
unset which
AskFile which local "Welche Datei ausgeben ?" confirm diese
cancel keine no_old
type $which
------------------------------------------------------------------
5. Chunks
Umgebung: CLI
Voraussetzung: OS2
Aufruf: Chunks <File1> [<File2> ...]
Programmiersprache: A68k
Funktion:
Listet alle Chunks der genannten Dateien mit ID und Länge auf.
------------------------------------------------------------------
6. FileCheck
Umgebung: CLI
Aufruf: FileCheck <Pfad>
Programmiersprache: DICE
Funktion:
FileCheck liest alle Dateien in <Pfad> und dessen Sub-Directories.
Es wurde geschrieben, um Fehler in der Datei-Struktur des alten
Filesystems aufzufinden.
Solche Fehler können von DiskCopy nicht entdeckt werden, wenn
keine TrackDisk-Fehler vorliegen; trotzdem entstehen dann im
Filesystem Prüfsummenfehler.
Außer einer kompletten Analyse der Dateistruktur, wie sie
vermutlich vom DiskDoctor durchgeführt wird, kenne ich nur noch
das hier praktizierte vollständige Lesen als Prüfmethode, um die
Integrität der Dateien zu testen.
------------------------------------------------------------------
7. OS2
Umgebung: CLI
Programmiersprache: A68k
Funktion:
OS2 testet (anhand der ExecBase-Struktur), ob man sich gerade
unter Kickstart 2.0 (oder höher) befindet oder nicht. Das Ergebnis
wird - für Batchfiles ideal - im ReturnCode übergeben: RETURN_OK,
falls Kickstart 2.0, RETURN_WARN, falls tiefer.
Beispiel:
Ich hatte einmal ein Programm "QMouse", das unter Kickstart 2.0
crasht, während es unter 1.3 gute Dienste versah. Also hieß es in
meiner Startup-Sequence:
...
OS2
IF NOT WARN
RUN QMouse
ENDIF
...
------------------------------------------------------------------
8. Duplicator
Umgebung: CLI
Voraussetzung: OS2
Aufruf: Duplicator <datei> [...] <verzeichnis>
Programmiersprache: DICE
Funktion:
Duplicator kopiert zunächst die genannten Datein ins genannte
Verzeichnis. Danach überwacht er die Dateien mit Notification auf
(Schreib-) Zugriffe und kopiert sie in diesem Falle erneut. Ein
gleichzeitiges Umbenennen der Dateien ist nicht vorgesehen.
Duplicator kann durch ^c / Break <n> C abgebrochen werden.
Duplicator dokumentiert alle seine Aktivitäten in einem eigenen
Fenster.
Beispiel:
Ich hatte einmal eine Turbokarte, nicht aber eine Festplatte. Beim
Programmieren stellte sich folgendes Problem: Wenn ich die Sources
im RAM: halte, geht das Compilieren ziemlich flott, aber bei jedem
Guru ist ein - möglicherweise rechts großes - Stück Arbeit futsch.
Auf Diskette sind die Sources zwar einigermaßen Guru-sicher, aber
auch eine unnötige Bremse für den Compiler. Ideal erschien mir
unter diesen Hardware-Voraussetzungen, die Sources auf Disk und
Ram-Disk zu speichern. Und so etwas macht man natürlich nicht per
Hand, sondern eben per Duplicator.
------------------------------------------------------------------
9. Guru
Umgebung: CLI
Aufruf: Guru <Guru1> [...]
Programmiersprache: DICE
Funktion:
Guru kommentiert (in englisch) die gegebene(n) Guru-Nummer(n).
Nichts besonderes, es erspart einem lediglich das Nachschlagen
der AN_...-Codes im RKRM.
Aufgrund der zahlreichen Texte ist Guru leider ziemlich lang:
etwa 14K !
------------------------------------------------------------------
10. TestKey
Umgebung: CLI
Aufruf: TestKey <Tastencode> ... <Tastencode>
[ANY | ALL]
Programmiersprache: DICE
Funktion:
TestKey überprüft, ob die angegebene Taste gedrückt ist oder
nicht. Ist sie gedrückt, so wird RETURN_WARN==5 zurückgegeben,
sonst RETURN_OK==0.
Bei mehreren Tasten entscheiden die Optionen ANY (default) bzw.
ALL über die Verknüpfung:
Bei ANY genügt es, daß eine der genannten Tasten gedrückt ist, um
RETURN_WARN zu erhalten.
Bei ALL müssen alle genannten Tasten gedrückt sein, um RETURN_WARN
zu erhalten.
Erklärung der Tastencodes:
<Tastencode> = <Tastennummer> | QUALIFIER | NUMPAD | FKEYS |
MISC | RETURN | SPACE
dabei sind gleichwertig:
QUALIFIER 96 97 98 99 100 101 102 103 (alle Qualifier-Tasten)
(das sind Shift, Amiga, Alt, und Control und CapsLock)
NUMPAD 15 29 30 31 45 46 47 61 62 63 67 74 90 91 92 93 94
(alle Tasten am Ziffernblock)
FKEYS 80 81 82 83 84 85 86 87 88 89 (alle Funktionstasten)
RETURN 67 68 (RETURN und ENTER)
MISC 65 66 70 69 76 77 78 79 95
(ESC, TAB, BACKSPACE, DEL, HELP und die Cursortasten)
SPACE 64 (SPACE)
weiter kann man Tastennummern dezimal oder hexadezimal definieren:
<Tastennummer> = <Tastennummer_dezimal> |
$<Tastennummer_hexadezimal>
<Tastennummer_dezimal> = Dezimalzahl zwischen 0 und 103
<Tastennummer_hexadezimal> = Hexadezimalzahl zwischen 0 und 103
Beispiel:
Ich habe mir auf meiner Festplatte u.a. einen Terminkalender
installiert. Diesen möchte ich einerseits beim Booten aufrufen
können, andereseits nicht zwangsläufig sehen müssen. Also steht in
meiner User-Startup:
...
TestKey QUALIFIER
if warn
cd sys:büro
TKal
cd sys:
endif
...
Die Benutzung der Qualifier-Tasten ist hier doppelt bequem, da ich
einerseits nicht durch irgendwelche Tastendrücke die Ausgaben im
CLI-Fenster blockieren muß und andererseits irgendwann CapsLock
drücken kann und nicht festhalten brauche, da es im Sinne des
Systems gedrückt ist, solange die LED leuchtet.
------------------------------------------------------------------
11. Lupe
Umgebung: CLI, Workbench
Voraussetzung: OS2
Programmiersprache: DICE
Funktion:
Lupe öffnet ein Window und zeigt in diesem vergrößert einen
Ausschnitt der Bildschirm, die sich auf dem aktiven Screen unter
dem Mauscursor befindet. Diese Vergrößerung wird aktualisiert,
sobald sich der Mauscursor bewegt - vorausgesetzt, das Window von
Lupe ist aktiv. Mit den Tasten 'P' bzw. '+' und 'M' bzw. '-' kann
man die Anzahl der Spalten und Zeilen, die rund um den Mauscursor
gelesen werden, vergrößern. Ein großer Bereich hat allerdings den
Nachteil, doch beachtlich Rechenzeit zu fressen.
Beispiel:
Sie programmieren gerade eine graphische Oberfläche für Ihr neues
Programm und können auf dem Monitor nicht genau erkennen, ob
verschiedene Elemente korrekt aufeinander ausgerichtet sind. Hier
hilft Ihnen Lupe.
------------------------------------------------------------------
12. DefaultColors
Umgebung: CLI
Programmiersprache: A68k
Funktion:
DefaultColors setzt die Preferences-Screenfarben gemäß den
Default-Preferences.
Beispiel:
Sie arbeiten sowohl mit Kickstart 1.3 als auch mit 2.0. Um gleich
beim Booten sehen zu können, was Sache ist, integrieren Sie diesen
Befehl in ihrer Startup-Sequence.
------------------------------------------------------------------
13. FlushFonts
Umgebung: CLI, Workbench
Programmiersprache: A68k
Funktion:
Versucht, sämtliche ungeöffneten Fonts aus dem Speicher zu
löschen, indem es sie an Graphics.RemFont übergibt. Unter
Kickstart 2.0 werden die Fonts vorher mit Graphics.StripFont
bearbeitet.
WARNUNG:
Die verwendete Methode habe ich in keinem RKRM o.ä. gefunden, ich
weiß also nicht, ob sie Guru-sicher ist. Da ich das Programm
jedoch mit Enforcer getestet habe, halte ich es zumindest für
absolut unkritisch, ungeöffnete Fonts mit RemFont/StripFont zu
bearbeiten.
Besondere Vorsicht empfehle ich daher unter Kickstart 3.0 (V38
aufwärts).
------------------------------------------------------------------
14. Dir
Umgebung: CLI
Voraussetzung: OS2
Aufruf: Dir [<dir>] [OPT A|I|AI|D|F] [ALL] [INTER]
[DIRS] [FILES]
Programmiersprache: A68k
Funktion:
Ersatz des Original CLI-Befehls gleichen Namens. Dieses Programm
wurde aus dem Original (V 37.5) durch einen Disassembler gewonnen.
Anschließend wurden einige Kleinigkeiten per Hand optimiert.
Parameter siehe DOS-Handbuch.
Einziger Unterschied zum Original: Dateien mit gesetztem H-Flag
werden nicht gelistet. Das H- oder Hidden-Flag ist Bit #7 des
Protection-Bytes.
WARNUNG:
Das H-Flag existiert offiziell (zumindest bis OS2) nicht. Es kann
daher sein, daß dieses Bit unter OS3 anders Verwendung findet. Wer
sich nicht im klaren darüber ist, sollte diesen Befehl unter
Kickstart 3 nicht benutzen.
Beispiel:
Die Icon-Dateien der Workbench haben unter CLI praktisch keine
Bedeutung, verlängern aber das Listing eines Verzeichnisses
störend. Ich habe mir daher angewöhnt, die .info-Files allesamt
mit "protect *.info +h" zu bearbeiten. Dann werden sie von meinem
Dir einfach übergangen. Leider wird, sobald die Workbench ein Icon
überschreibt - und sei es, nur um seine Position zu verändern -
das H-Flag gelöscht.
------------------------------------------------------------------
15. MakeDir
Umgebung: CLI
Voraussetzung: OS2
Aufruf: MakeDir <dir> [...]
Programmiersprache: A68k
Funktion:
Ersatz des Original CLI-Befehls gleichen Namens. Dieses Programm
wurde aus dem Original (V37.21) durch einen Disassembler gewonnen.
Anschließend wurden einige Kleinigkeiten per Hand optimiert.
Parameter siehe DOS-Handbuch.
Einziger Unterschied zum Original: Die neu erzeugten Verzeichnisse
werden als nicht ausführbar markiert. Für mich war es ein
Schönheitsfehler, daß Verzeichnisse laut 'List' ausführbar sein
sollen.
Von der Workbench erzeugte Verzeichnisse sind übrigens unabhängig
von MakeDir ausführbar.